package com.jiuqi.bi.database.metadata;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * SQL元数据操作接口
 * @author xuxiaolong
 *
 */
public interface ISQLMetadata {

	/**
	 * 获取指定用户命名空间下的所有外键信息
	 * @param schema  用户命名空间 值为<code>null</code>查询当前用户
	 * @return 外键对象 未查询到外键返回<code>null</code>
	 * @throws SQLException 执行SQL查询出错时抛出SQL异常
	 * @throws SQLMetadataException
	 */
	List<LogicForeignKey> getLogicForeignKeyBySchemaName(String schema) throws SQLException, SQLMetadataException;

	/**
	 * 获取默认用户命名空间下某个具体表的外键信息
	 * @param tableName 实体表表名,默认获取当前用户命名空间
	 * @return 外键对象 未查询到外键返回<code>null</code>
	 * @throws SQLException 执行SQL查询出错时抛出SQL异常
	 * @throws SQLMetadataException
	 */
	List<LogicForeignKey> getLogicForeignKeyByTableName(String tableName) throws SQLException, SQLMetadataException;

	/**
	 * 获取指定用户命名空间下某个具体表的外键信息
	 * @param tableName 实体表表名
	 * @param schema 用户命名空间 值为<code>null</code>查询当前用户
	 * @return 外键对象 未查询到外键返回<code>null</code>
	 * @throws SQLException 执行SQL查询出错时抛出SQL异常
	 * @throws SQLMetadataException
	 */
	List<LogicForeignKey> getLogicForeignKeyByTableName(String schema, String tableName) throws SQLException, SQLMetadataException;


}
